
package com.gitee.jmash.oidc.oauth2.enums;

import org.apache.commons.lang3.StringUtils;

/**
 * oauth2 authorize response_type.
 *
 * @author CGD
 *
 */
public enum ResponseType {

  /** 授权码（authorization code）方式. */
  code("code"),

  id_token("id_token"),

  /** 隐藏式（implicit）方式(包含id_token). */
  id_token_token("id_token token"),

  hybrid("code id_token");

  private String value;

  ResponseType(String value) {
    this.value = value;
  }

  public String getValue() {
    return this.value;
  }

  /** 授权码/hybrid模式. */
  public static boolean hasCode(String responseType) {
    if (StringUtils.equals(ResponseType.code.getValue(), responseType)) {
      return true;
    }
    if (StringUtils.equals(ResponseType.hybrid.getValue(), responseType)) {
      return true;
    }
    return false;
  }

  /** 隐藏式. */
  public static boolean hasImplicit(String responseType) {
    if (StringUtils.equals(ResponseType.id_token_token.getValue(), responseType)) {
      return true;
    }
    if (StringUtils.equals(ResponseType.id_token.getValue(), responseType)) {
      return true;
    }
    return false;
  }

  /** IdToken. */
  public static boolean hasIdToken(String responseType) {
    if (StringUtils.equals(ResponseType.id_token_token.getValue(), responseType)) {
      return true;
    }
    if (StringUtils.equals(ResponseType.id_token.getValue(), responseType)) {
      return true;
    }
    if (StringUtils.equals(ResponseType.hybrid.getValue(), responseType)) {
      return true;
    }
    return false;
  }

  /** accessToken. */
  public static boolean hasAccessToken(String responseType) {
    if (StringUtils.equals(ResponseType.id_token_token.getValue(), responseType)) {
      return true;
    }
    return false;
  }

}
